The task of executing a large-scale application over an extended period of time includes performing changes to the application in response to changes in the specification or in response to failures. As a result, the application becomes increasingly complex over time, which makes it difficult to wholly overlook the application and causes decline in the maintainability. For this reason, a maintenance task known as refactoring needs to be performed on the application. For example, for a core business application of a bank or the like, the need for refactoring is critically high because of the largeness of its scale and the length of its maintenance period.
Because of the largeness of the scale of an application, such refactoring weighs heavily on the operator. Given that factor, development of refactoring supporting technology is being pursued. For example, Japanese Laid-open Patent Publication No. 2004-295425 discloses a technology in which a metrics is obtained regarding each individual module of an application and modules of inferior quality are identified and then specified as candidate modules for refactoring. Moreover, Japanese Laid-open Patent Publication No. 06-266550 and Japanese Laid-open Patent Publication No. 2001-325100 disclose a technology in which the complexity of each individual program is evaluated based on the variables used in that program.
However, although such conventional technology enables evaluation of the complexity of modules on an individual basis and identification of those modules as targets for refactoring, no support is provided to the refactoring at the architecture level of an entire application. On the one hand, refactoring performed at the architecture level on an entire application is highly effective, i.e., produces a greater impact; while on the other hand, it is difficult to find locations for enhancement in order to achieve reduction in the complexity of the entire application. Moreover, even if locations for enhancement are found, it is important that the enhancement impact be quantitatively evaluable in advance. However, evaluating the enhancement impact in advance is also a difficult task.